#include "Variavel.h"

/* 
 * @resume: construtor da classe Variavel
 */
Variavel::Variavel() {
	
}

/* 
 * @resume: construtor da classe Variavel
 * @param: string identificador, int categoria, int nivel,
 * 			string procedimentoPai, int linha, int dislocate, string type) :
 * 			IdentificadorGenerico(identificador, categoria, nivel, procedimentoPai, linha
 */
Variavel::Variavel(string identificador, int categoria, int nivel,
		string procedimentoPai, int linha, int dislocate, string type) :
	IdentificadorGenerico(identificador, categoria, nivel, procedimentoPai,
			linha) {

	this->dislocateVariavel = dislocate;
	this->typeVariavel = type;

}

/* 
 * @resume: destrutor da classe Variavel
 */
Variavel::~Variavel() {
	
}

/* 
 * @resume: metodo utilizado para setar o deslocamento da variavel
 * @param: int dislocateVariavel
 */
void Variavel::setDislocateVariavel(int dislocateVariavel) {
	this->dislocateVariavel = dislocateVariavel;
}

/* 
 * @resume: metodo utilizado para setar o tipo da variavel
 * @param: string typeVariavel
 */
void Variavel::setTypeVariavel(string typeVariavel) {
	this->typeVariavel = typeVariavel;
}

/* 
 * @resume: metodo utilizado para obter o deslocamento da variavel
 * @return: int dislocateVariavel
 */
int Variavel::getDislocateVariavel() {
	return (this->dislocateVariavel);
}

/* 
 * @resume: metodo utilizado para obter o tipo da variavel
 * @return: string typeVariavel
 */
string Variavel::getTypeVariavel() {
	return (this->typeVariavel);
}

/* 
 * @resume: metodo utilizado para imprimir a variavel no arquivo de saida (hashTable.txt)
 * @return: Arquivo& fileOut
 */
void Variavel::show(Arquivo& fileOut) {
	fileOut.write(" | Categoria: Variavel \n");
	fileOut.write(" | Nivel: " + IntToString(getNivelIdentificador())+ "\n");
	fileOut.write(" | Procedimento: " + getProcedimentoPaiIdentificador()+ "\n");
	fileOut.write(" | Tipo: " + getTypeVariavel()+ "\n");
	fileOut.write(" | Deslocamento: " + IntToString(getDislocateVariavel())+ "\n");
	fileOut.write(" | Linha: " + IntToString(getLinhaIdentificador())+ "\n");
	fileOut.write(" | Rotulo: " + getIdentificador()+ "\n");
}
